﻿using Persistencia;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dlls
{
    public class CaixaBancoDLL
    {
        Context context;

        public CaixaBancoDLL()
        {
            context = new Context();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="NomeCaixaBanco"></param>
        /// <returns></returns>
        public IEnumerable<CaixaBanco> List() {
            return (from o in context.CaixasBancos select o).ToList();
        }

        public void Insert(CaixaBanco caixaBanco) 
        {
            context.CaixasBancos.InsertOnSubmit(caixaBanco);
            context.SubmitChanges();
        }

        public void Update(int codigo, CaixaBanco caixaBanco)
        {
            CaixaBanco cb = context.CaixasBancos.SingleOrDefault(o => o.Codigo == codigo);
            cb.NumeroConta = caixaBanco.NumeroConta;
            cb.LimiteEspecial = caixaBanco.LimiteEspecial;
            cb.NomeCaixaBanco = caixaBanco.NomeCaixaBanco;
            cb.CodAgencia = caixaBanco.CodAgencia;
            cb.Caixa = caixaBanco.Caixa;
            cb.Operacao = caixaBanco.Operacao;
            cb.Tipo = caixaBanco.Tipo;
            cb.Operacao = caixaBanco.Operacao;
            if (cb.EmiteBoleto == true)
            {
                cb.Cedente = caixaBanco.Cedente;
                cb.NossoNumero = caixaBanco.NossoNumero;
                cb.CPFCNPJ = caixaBanco.CPFCNPJ;
            } 
            context.SubmitChanges();
        }

        public void Delete(int CodCaixaBanco) 
        {
            CaixaBanco caixaBanco = context.CaixasBancos.Single(cx => cx.Codigo == CodCaixaBanco);
            context.CaixasBancos.DeleteOnSubmit(caixaBanco);
            context.SubmitChanges();
        }

        public CaixaBanco getCaixaBanco(int codigo)
        {
            return context.CaixasBancos.SingleOrDefault(e => e.Codigo == codigo);
        }

        public CaixaBanco getCodigoPorNomeCaixaBanco(string nomeCaixaBanco)
        {
            return context.CaixasBancos.SingleOrDefault(e => e.NomeCaixaBanco == nomeCaixaBanco);
        }
    }
}
